/*
 * Universidad del Valle de Guatemala
 * StackPostFix.java
 * Clase que implementa la interface Stack en donde se definen los métodos 
 * necesarios para su funcionamiento.
 */
package PostFix;
import Interface.Stack;
import java.util.ArrayList;
import java.util.Scanner;

/**
 *
 * @author Jonathan López, 11106
 */
public class StackPostFix<E> implements Stack<E>{
    
    protected ArrayList<E> datos;
    protected String sentencia;
    protected Scanner teclado = new Scanner(System.in);
    
    public StackPostFix(){
        datos=new ArrayList<E>();
        sentencia="";
    }
    
    /**
     * Guardar el parámetro en la pila.
     * @param item 
     */
    @Override
    public void push(E item) {
        datos.add(item);
    }

    /**
     * Obtiene el último elemento guardado en la pila y lo borra.
     * @return null si la pila estaba vacía
     */
    @Override
    public E pop(){
        if(empty()==false){
            return datos.remove(size()-1);
        } else{
            return null;
        } 
    }

    /**
     * Obtiene el último elemento guardado en la pila, sin borrarlo.
     * @return null si la pila estaba vacía
     */
    @Override
    public E peek() {
        if(empty()==false){
            return datos.get(size()-1);
        } else{
            return null;
        } 
    }

    /**
     * Indica si la pila está vacía.
     * @return true si está vacía, false si no está vacía.
     */
    @Override
    public boolean empty() {
        return size()==0;
    }

    /**
     * Indica el tamaño de la pila.
     * @return int
     */
    @Override
    public int size() {
        return datos.size();
    }
    
    /**
     * Obtiene el resultado guardado en la pila.
     * @return int
     */
    public E resultado(){
        if(empty()==false){
            return peek();
        } else{
            return null;
        }
    }
    
    
}
    
    
